export type Flags = number;

// flags 标记
export const NoFlags = 0b0000000;
export const Placement = 0b0000001; // 插入 移动 创建
export const Update = 0b0000010; // 更新 有不同的含义
export const ChildDeletion = 0b0000100; // 当前节点 的 子节点  有需要被删除的

export const PassiveEffect = 0b0001000; //  表示 当前fiber节点 本次更新 存在 useEffect 的 副 作用回调是需要执行的

export const Ref = 0b0010000;

export const Visibility = 0b0100000;

// 捕获到 something
export const DidCapture = 0b1000000;

// unwind应该捕获、还未捕获到
export const ShouldCapture = 0b1000000000000;

export const MutationMask =
	Placement | Update | ChildDeletion | Ref | Visibility;
export const LayoutMask = Ref;

export const PassiveMask = PassiveEffect | ChildDeletion; // 用于判断  当前fiber 本次更新 是否需要执行 useEffect副作用的函数 的回调 卸载也需要 执行 销毁的回调函数

export const HostEffectMask =
	MutationMask | LayoutMask | PassiveMask | DidCapture;

//   对于fiber，新增如果 新增了 PassiveEffect 标记，代表「当前fiber本次更新存在副作用 需要执行」
//  执行 什么 副作用呢 那就要看  hook 的effect 的  tag ，如果是 Passive代表 是useEffect 但 该tag 只是 代表 hook的类型 为 Passive 但该hook的副副作用 不需要执行
// 如果 hook 的effect的 tag 是 tag = Passive | HookHasEffect 表示 当前fiber 的这个hook 需要执行 Passive 类型的 副作用 也就是 useEffect 的回调函数
//  hook 的effect的 tag 是 tag = Layout | HookHasEffect 表示 当前fiber 的这个hook 需要执行 Layout 类型的 副作用 也就是 useLayoutEffect 的回调函数

// tag 表示 是什么类型 的 副作用
// 当hook 是 useEffect 的时候 hook.memoizedState.tag  是 Passive 或 Passive | HookHasEffect
// hook.memoizedState.tag = Passive;
